package com.atguigu.bigdata.scala.chapter07

import scala.collection.mutable

object Scala05_Collection_Map_2 {

    def main(args: Array[String]): Unit = {

        // TODO 集合 - Map - 可变
        val map = mutable.Map(
            "a" -> 1, "b" -> 2, "c" -> 3
        )

        // 获取数据
        // 通过key获取value
        //println(map.get("a").get) // java : key存在, 返回对应的value
        //println(map.get("d").get) // java : key不存在， 返回结果为null

        // java中从map中获取数据，有可能key不存在，如果对不存在key的数据进行获取，返回结果为null
        // 如果不进行判断，就会出现空指针异常。
        // scala为了避免出现这种情况，声明了一个特殊的类，类名为： Option(选项)
        // Option类只有2个对象 ： Some(有值), None(无值)
        // Option提供了一个get方法，如果有值，就可以调用这个方法获取值。
        // 如果没有值，也调用get方法，会出现异常
        // 一般情况下，Option数据再获取时，应该进行判断
        val maybeInt: Option[Int] = map.get("d")
        if ( maybeInt.isEmpty ) {
            // 如果为空，也可以设定默认值
            println("数据为空")
            println("设置默认值为 = " + maybeInt.getOrElse(9))
        } else {
            println(maybeInt.get)
        }

        // scala为了简化map数据的操作，提供了特殊的方法来使用
        val v: Int = map.getOrElse("b", 0)
        println(v)








    }
}
